/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package beans;

import bc.CuentaDelegate;
import edu.upn.sigemfi.plt.be.Cuenta;
import edu.upn.sigemfi.plt.be.EstadoCuenta;
import edu.upn.sigemfi.seg.be.PersonaNatural;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;

/**
 *
 * @author GABRIEL
 */
public class CuentaController {

    private CuentaDelegate delegado;
    private Cuenta cuenta;
    private PersonaNatural cliente;
    private List<Cuenta> cuentas;
    private Integer estado;

    public CuentaController() {
        cuenta = new Cuenta();
        delegado = new CuentaDelegate();
    }

    public Integer getEstado() {
        return estado;
    }

    public void setEstado(Integer estado) {
        this.estado = estado;
    }

    public List<Cuenta> getCuentas() {
        return cuentas;
    }

    public void setCuentas(List<Cuenta> cuentas) {
        this.cuentas = cuentas;
    }

    public PersonaNatural getCliente() {
        return cliente;
    }

    public void setCliente(PersonaNatural cliente) {
        this.cliente = cliente;
    }

    public Cuenta getCuenta() {
        return cuenta;
    }

    public void setCuenta(Cuenta cuenta) {
        this.cuenta = cuenta;
    }

    public String buscarCuenta() {
        try {
            cuenta = delegado.buscarCuentaPorNro(cuenta.getNroCuenta());
            if (cuenta.getEstadoCuenta() == EstadoCuenta.Aperturado) {
                estado = 1;
            } else if (cuenta.getEstadoCuenta() == EstadoCuenta.Bloqueado) {
                estado = 2;
            }
        } catch (Exception ex) {
            Logger.getLogger(CuentaController.class.getName()).log(Level.SEVERE, null, ex);
            mostrarMensaje("Error", "Buscar Cuenta", FacesMessage.SEVERITY_ERROR);
        }


        return "";
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    public String guardar() {
        if (estado == 1) {
            cuenta.setEstadoCuenta(EstadoCuenta.Aperturado);
        } else if (estado == 2) {
            cuenta.setEstadoCuenta(EstadoCuenta.Bloqueado);
        }
        try {
            delegado.editar(cuenta);
            mostrarMensaje("Exito ", "Cuenta Actualizada", FacesMessage.SEVERITY_ERROR);
        } catch (Exception ex) {
            Logger.getLogger(CuentaController.class.getName()).log(Level.SEVERE, null, ex);
            mostrarMensaje("Error", "Actualizar Cuenta", FacesMessage.SEVERITY_ERROR);
        }


        return "";
    }
}
